package Control;

import Model.Produto;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;

public class ProdutoControl {

    private ArrayList<Produto> produto;
    
    public ProdutoControl(){
        produto = new ArrayList<>();
        carregaProdutos();
    }
    
    private void carregaProdutos(){
        BufferedReader br= null;
        String conteudo = null;
        try {
            br = new BufferedReader(new FileReader("./dados/produto.txt"));
            while((conteudo = br.readLine()) != null){
                String[] partes = conteudo.split("-");
                Produto pd = new Produto(partes[0], Double.parseDouble(partes[1]), Integer.parseInt(partes[2])); //CARREGA DO ARQUIVO O NOME, PRECO E QUANTIDADE
                produto.add(pd);
            }
            br.close();
        } catch(Exception e) {
            //System.out.println(e.getMessage());
        }
    }
    
    public void gravaDados(){
        BufferedWriter bw = null;
        try {
            bw = new BufferedWriter(new FileWriter("./dados/produto.txt"));
            for(Produto pd : produto){
                bw.write(pd.dadosObjeto());
                bw.newLine();
            }
            bw.close();
        } catch(Exception e) {
        }
    }
    
    public void cadastraProduto(String nome, double preco){
        Produto pdt = new Produto();
        pdt.setNome(nome);
        pdt.setValor(preco);
        pdt.setQtd(0);
        produto.add(pdt);
        gravaDados();
    }
    
    public ArrayList<Produto> getProduto(){
        return produto;
    }
    
    public void atualizaQtd(Produto pdt){
        for(Produto pd : produto)
            if(pd.getNome().equalsIgnoreCase(pdt.getNome())){                
                produto.set(produto.indexOf(pd), pdt);
            }
        gravaDados();
    }
    
    public int tamQtd(int index){
        return produto.get(index).getQtd();
    }
    
    public Produto indiceProduto(int index){
        return produto.get(index);
    }
    
    public void atualizaEstoque(Produto pdt){
        for(Produto pd : produto)
            if(pd.getNome().equalsIgnoreCase(pdt.getNome())){
                produto.set(produto.indexOf(pd), new Produto(pd.getNome(), pd.getValor(), (pd.getQtd()-pdt.getQtd())));
            }
        gravaDados();
    }
}
